<!DOCTYPE html>
<html>
	<head>
		<meta charset="utf-8">
		<title>函数</title>
	</head>
	<body>
		<h1>本页面用于演示函数的使用</h1>
		
		<script>
			// 最简单的函数定义
			// function: 关键字.必不可少
			// func1: 自定义的函数名称
			// (): 代表函数不需要输入参数就可以调用
			// {}: 限定了函数体的范围.只有在大括号内的代码.才算是函数体.
			function func1(){
				document.write("i'm a teacher..sss");
				document.write("<br />");
				document.write("我班里有27名学生");
				document.write("<br />");
			}
			
			// 函数的调用需要使用函数名.以及参数.
			// 若是无参数的函数.使用空的小括号
			func1();
			func1();
			
			document.write("<br />开始演示有参数的函数<br />");
			// (stu_num): 代表此函数调用时需要输入一个参数。参数输入后。被赋值给stu_num
			// 定义函数时指定的参数名也叫做:形式参数,简称形参
			function func2(stu_num){
				document.write('stu_num=' + stu_num);
				document.write("i'm a teacher..sss");
				document.write("<br />");
				document.write("我班里有" + stu_num + "名学生");
				document.write("<br />");
			}
			
			// 调用函数时传入的参数.也叫做实参
			// 调用时把传入的实际参数赋值给了函数的形式参数
			func2(27);
			
			
			document.write("<br />开始演示有多个参数的函数<br />");
			// (stu_num): 代表此函数调用时需要输入一个参数。参数输入后。被赋值给stu_num
			// 定义函数时指定的参数名也叫做:形式参数,简称形参
			function func3(role, stu_num){
				document.write('stu_num=' + stu_num + "<br />");
				document.write("i'm a " + role + "..sss");
				document.write("<br />");
				document.write("我班里有" + stu_num + "名学生");
				document.write("<br />");
			}
			
			// 调用函数时传入的参数.也叫做实参
			// 调用时把传入的实际参数赋值给了函数的形式参数
			// 传入的参数会依次赋值给函数的形式参数.
			// 若传入的参数个数不足.则对应的形式参数为undefined
			func3(27);
			document.write("<br/> 传入足够的参数<br />");
			func3('teacher', 27);
			
			document.write("<br/> 传入足够的参数<br />");
			func3('学生', 27);
			
			document.write("<br/> 传入足够的参数,参数使用变量<br />");
			var role = "班长";
			var num = 27;
			num_x = 38;
			
			func3(role, num);
			
			// 函数内的变量使用var 声明时.只在函数内可以使用
			// 函数内的变量省略var 声明时.变量可作为全局变量访问.但需要在函数被调用后才生效(不推荐这样使用)
			// 函数内声明变量规范必须为只用于函数内
			function func5(){
				numxx = 8;
				var numyy = 9;
			}
			func5();
			document.write("<br />");
			// 函数调用之后.numxx做为全局变量被赋值
			document.write("numxx=" + numxx);
			document.write("<br />");
			// 函数调用后numyy也仍不能在函数外使用
			// document.write("numyy=" + numyy);
			
			var p_list = [1,2,3,5];
			var p_obj = {'role': '老式', 'num': 27};
			// 函数定义时.应确认传入的参数数据类型
			function func6(params){
				console.log("role=" + params.role + ',num=' + params.num);
			}
			func6(p_obj);
			func6(p_list);
		</script>
	</body>
</html>
